﻿(
/*
*   对象拖动空间
*/
    function() {
        /*
        *   对象的拖动功能
        */

        var x, y, z, down = false, obj;
        function init() {
            obj = event.srcElement;    //事件触发对象
            obj.setCapture();        //设置属于当前对象的鼠标捕捉
            z = obj.style.zIndex;          //获取对象的z轴坐标值
            obj.style.zIndex = 999999999; //设置对象的z轴坐标值为999999999，确保当前层显示在最前面
            x = event.offsetX;   //获取鼠标指针位置相对于触发事件的对象的X坐标
            y = event.offsetY;    //获取鼠标指针位置相对于触发事件的对象的Y坐标
            down = true;       //布尔值，判断鼠标是否已按下，true为按下，false为未按下 
            event.cancelBubble = true; //以取消在该对象上的事件冒泡。
        }

        function start() {
            //判断鼠标已被按下且onmouseover和onmousedown事件发生在同一对象上 
            if (down && event.srcElement == obj) {
                with (obj.style) {
                    /*设置对象的X坐标值为文档在X轴方向上的滚动距离加上当前鼠标指针相当于文档对象的X坐标值减鼠标按下时指针位置相对于触发事件的对象的X坐标*/
                    posLeft = document.body.scrollLeft + event.x - x;
                    /*设置对象的Y坐标值为文档在Y轴方向上的滚动距离加上当前鼠标指针相当于文档对象的Y坐标值减鼠标按下时指针位置相对于触发事件的对象的Y坐标*/
                    posTop = document.body.scrollTop + event.y - y;
                }
            }
        }

        function stop() {
            //onmouseup事件触发时说明鼠标已经松开，所以设置down变量值为false
            down = false;
            obj.style.zIndex = z;     //还原对象的Z轴坐标值
            obj.releaseCapture();  //释放当前对象的鼠标捕捉 
        }
    }
)();
